//
// File: database.h
// Description: 
//

#ifndef DATABASE_H
#define DATABASE_H

#include <stdexcept>
#include <sstream>
#include <iostream>
#include <sqlite3.h>
#include <sqlite3x.hpp>

#define DBNAME "users.db"

using namespace sqlite3x;
using namespace std;

class Database {
private:
	static Database *instance;

	sqlite3_connection conn;
	Database();
	bool validate();
	bool construct();

	// SQL stored commands
	string cmd_insertUser;
	string cmd_login;
	string cmd_userExists;


public:
	static Database *getInstance();
	static Database & get();
	~Database();
	
	bool usernameExists(const string username);
	bool login(const string username, const string password); // true if username
		// and password exist
	bool createUser(const string username, const string password);
	
	static string escape(const string str);

};

#endif
